<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Symbol的用法</title>
</head>
<body>

<p>作为常量</p>

<p>作为属性</p>

<p>半隐藏属性</p>


<script>
   //作为常量
    const Java=Symbol();
    const Ruby=Symbol();
   const Perl=Symbol();
   const Php=Symbol();
   const VB=Symbol();

   var lang=Php;

   if (lang===Java){
       console.log("Java的未来在哪里？")
   }
   if (lang===Ruby){
       console.log("Ruby的未来在哪里？")
   }

   //作为属性
   let s1 = Symbol("mySymbol");
   let s2 = Symbol("mySymbol");

   var obj = {};
   obj[s1] = "hello";
   obj[s2] = "world";

   console.log(obj);//{Symbol(mySymbol): "hello", Symbol(mySymbol): "world"}
   console.log(obj[s1]);//hello
   console.log(obj[s2]);//world

    //半隐藏属性
    const MYKEY=Symbol();
    class User{//类似java构造函数
        constructor(key,name,age){
            this[MYKEY] = key;
            this.name = name;
            this.age = age;
        }
        checkKEY(key){
            return this[MYKEY] === key;
        }
    }

   let user = new User(123, 'Curry', 29);
   console.log(user.name, user.age, user[MYKEY]);//Curry 29 123
   console.log(user.checkKEY(123));   //true保证键值唯一
   console.log(user.checkKEY(456));   //false
   console.log(Object.keys(user));    //[ 'name', 'age' ]
   //JSON 通常用于与服务端交换数据。
   //在向服务器发送数据时一般是字符串。
   //我们可以使用 JSON.stringify() 方法将 JavaScript 对象转换为字符串。
   console.log(JSON.stringify(user)); //{"name":"Curry","age":29}


   var obj1 = { "name":"runoob", "alexa":10000, "site":"www.runoob.com"};
  // 我们使用 JSON.stringify() 方法处理以上数据，将其转换为字符串：
    var myJSON = JSON.stringify(obj1);
    console.log(myJSON);//{"name":"runoob","alexa":10000,"site":"www.runoob.com"}
</script>
</body>
</html>
